Colmap 中 Simple_Pinhole 和 Pinhole 模型生成内参的转换

2022 年 9 月 2 日 星期五(已编辑)
/ ,
89

Colmap 中 Simple_Pinhole 和 Pinhole 模型生成内参的转换

最近在跑 NeRF 的时候需要用到自己的数据集做测试,于是用 Colmap 重建了一组数据,不过在选择相机模型的时候看到了 Simple_Pinhole 和 Pinhole 两个模型,对应生成的数据里内参格式分别是:

  • Simple_Pinhole:f,cx,cyf, c_x, c_y
  • Pinhole:fx,fy,cx,cyf_x, f_y, c_x, c_y

那么这两个值能不能互相转换呢,我们平常学到的针孔相机的模型应该都只有一个焦距,但是 Pinhole 模型中出现了 fx,fyf_x, f_y 两个焦距值,有什么不同吗?于是我去查了一下,这里做一个记录。结论:平常一般都是一样的,除非是特殊的畸变模型。

产生的原因

首先我们看看 Pinhole 模型内参矩阵的形式:

(fx0cx0fycy001) \begin{pmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix}

其中 cx,cyc_x, c_y 是表示图像在图像坐标系中的偏移量,但是 fx,fyf_x, f_y 就比较不同了,对于一般情况下,这两个值应该是相等的,毕竟小孔成像对应到各个像素上都满足一个相似性的比例关系,这两个关系在两个坐标轴上应该是相同的,不然就畸变了是吧。

具体的推导可以看看参考文章里的 [4],[5] 这两篇文章,都写得很详细。

小孔成像公式推导

最近是真的智力下降了,一时间没反应过来这个公式怎么推出来的。

从百度截的针孔相机模型图

从百度截的针孔相机模型图

从图中我们可以得到几个量:

  • 焦距 ff:OF
  • 像距 mm:OD
  • 物距 nn:OB

我们可以通过相似三角形得到这样的关系:

BOOD=ABDE \frac{BO}{OD} = \frac{AB}{DE}
OCDE=OF2DE \frac{OC}{DE} = \frac{OF_2}{DE}

通过 OC = AB 可以进一步得到:

OF2F2D=ABDE=BOOD \frac{OF_2}{F_2D} = \frac{AB}{DE} = \frac{BO}{OD}
fmf=nm \rightarrow \frac{f}{m-f} = \frac{n}{m}
1f=1n+1m \rightarrow \frac{1}{f} = \frac{1}{n} + \frac{1}{m}

参考文章

[1] [相机模型详解](https://blog.csdn.net/lsh_2013/article/details/47615309)
[2] [关于相机内参中的焦距fx和fy](https://www.cnblogs.com/zipeilu/p/6658177.html)
[3] [相机的那些事儿 (二)成像模型](https://zhuanlan.zhihu.com/p/23090593)
[4] [相机标定的内参、外参、畸变参数](https://www.jianshu.com/p/3e6764b13c6e)
[5] [相机的内参和外参分别是什么意思?](https://www.zhihu.com/question/484467944/answer/2288042490)

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...